package erbedo.tvfinder.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter {
	
    public static final String KEY_ROWID = "id";
    public static final String KEY_TITLE = "title";
    public static final String KEY_STARTTIME = "starttime";
    public static final String KEY_DUR = "dur";    
    public static final String KEY_DESC = "desc";    
    public static final String KEY_GENRE = "genre";    
    public static final String KEY_SUBGENRE = "subgenre";
    public static final String KEY_PRIMA = "prima";    
    
    private static final String TAG = "DBAdapter";
    
    private static final String DATABASE_NAME = "programs";
    private static final String DATABASE_TABLE = "p";
    private static final int DATABASE_VERSION = 7;

    private static final String DATABASE_CREATE =
        "create table if not exists p (id long, "
        + "title text, starttime text, " 
        + "dur text, desc text, genre text, subgenre text, prima text);";
        
    private final Context context; 
    
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx) {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }
    
    public boolean cleanDb() {
    	String delete = "DELETE FROM "+DATABASE_TABLE;
    	db.execSQL(delete);
    	return true;
    }
        
    private static class DatabaseHelper extends SQLiteOpenHelper {
        DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.w(TAG, "Upgrading database from version " + oldVersion 
                    + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }    
    
    //---opens the database---
    public DBAdapter open() throws SQLException {
        db = DBHelper.getWritableDatabase();
        return this;
    }

    //---closes the database---    
    public void close() {
        DBHelper.close();
    }
    
    //---insert a title into the database---
    public long insertProgram(double id, String title, String desc) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ROWID, id);
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_DESC, desc);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }
    
    public long insertId(long id) {
    	ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ROWID, id);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }

//    //---deletes a particular title---
//    public boolean deleteTitle(long rowId) {
//        return db.delete(DATABASE_TABLE, KEY_ROWID + 
//        		"=" + rowId, null) > 0;
//    }

    //---retrieves all the titles---
    public Cursor getAllPrograms() {
        return db.query(DATABASE_TABLE, new String[] {
        		KEY_ROWID, 
        		KEY_TITLE
        		}, 
                null, 
                null, 
                null, 
                null, 
                null);
    }

//    //---retrieves a particular title---
//    public Cursor getTitle(long rowId) throws SQLException {
//        Cursor mCursor =
//                db.query(true, DATABASE_TABLE, new String[] {
//                		KEY_ROWID,
//                		KEY_TITLE, 
//                		KEY_TITLE,
//                		KEY_DUR
//                		}, 
//                		KEY_ROWID + "=" + rowId, 
//                		null,
//                		null, 
//                		null, 
//                		null, 
//                		null);
//        if (mCursor != null) {
//            mCursor.moveToFirst();
//        }
//        return mCursor;
//    }

//    //---updates a title---
//    public boolean updateTitle(long rowId, String isbn, String title, String publisher) {
//        ContentValues args = new ContentValues();
//        args.put(KEY_TITLE, isbn);
//        args.put(KEY_TITLE, title);
//        args.put(KEY_DUR, publisher);
//        return db.update(DATABASE_TABLE, args, 
//                         KEY_ROWID + "=" + rowId, null) > 0;
//    }
}